'''
# 读取“银行贷款审批数据.xlsx”表，自变量为x1~x15，决策变量为y（1-同意贷款，0-不同意贷款）
# 其中x1~x6为数值变量，x7~x15为名义变量
# 数据清洗：
# 1.针对读取的整个数据集（原始表），去掉缺失值,返回结果用A1表示，
#   其中A1要求为数据框，字段名称与原数据集一致
# 2.针对读取的整个数据集（原始表），空值用0来代替，返回结果用A2表示，数据结构同1的要求。
# 3.针对读取的整个数据集（原始表），请对x1~x6中存在的缺失值用均值策略填充，x7~x15用最频繁值（众数）策略填充
#   返回填充处理后的整个数据集，记为A3，数据结构同1的要求
# 4.针对3处理后的整个数据集，对x1~x6,通过Z-Score方法判断异常值，并删除异常值所在的行
#   返回异常值处理后的整个数据集，记为A4，数据结构同1的要求
# 5. 针对4处理后的整个数据集，统计重复数据记录数，返回统计结果用数值Num表示
# 6. 针对4处理后的整个数据集，删除重复的记录，返回结果用A5表示，数据结构同1的要求
'''
import pandas as pd
A=pd.read_excel('银行贷款审批数据.xlsx')
A1=A.dropna()
A2=A.fillna(0)

x1=A.iloc[:,:6]
x2=A.iloc[:,6:-1]

from sklearn.preprocessing import Imputer 
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit(x1)
x1_1=imp.transform(x1)
imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)
imp.fit(x2)
x2_1=imp.transform(x2)
import numpy as np
x=np.hstack((x1_1,x2_1))
xf=pd.DataFrame(x)
xf.columns=list(A.columns)[:-1]
A3=pd.concat([xf,A.iloc[:,[15]]],axis=1)

df_zscore=A3.iloc[:,:6]
for i in range(6):
    z_score=(A3.iloc[:,i]-A3.iloc[:,i].mean())/A3.iloc[:,i].std()
    df_zscore.iloc[:,i]=z_score.abs()>2.2

index=df_zscore.iloc[:,0].values
for i in range(1,6):
    index=index|df_zscore.iloc[:,i].values

A4=A3.iloc[~index,:]

isd=A4.duplicated()
Num=len(isd[isd.values==True])
A5=A4.drop_duplicates()
